دسته بندی ها
23:21 1398/09/08

دلیل پرش 1000 تایی خودکار فیلد identity در Sql server

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1617     رتبه کاربر : 2
دسته بندی : Sql Server

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5387
پاسخ دهنده : pedram_khan 00:06 1398/09/09

دلیل پرش فیلد Identity در Sql Server یک مساله طبیعی هست. برای درک بهتر این موضوع توضیحات بیشتری رو ارایه می کنم براتون.

این مساله 2 دلیل می تونه داشته باشه که دلایل کامل رو میتونید توی این لینک مطالعه بفرمایید. البته من هم توضیحات خودم رو میدم.

 

اما برای رفع این مشکل میتونید توسط دستور زیر مقدار فیلد Identity رو ریست کنید.

 

DBCC CHECKIDENT (mytable, RESEED, 0)

 

البته این حالت رو بیشتر تو SQL Server 2012 و پس از هر بار restart شدن دیتابیس داریم، که همراه با یک پرش در فیلد identity اتفاق می افته و مقدار این پرش به نوع فیلد identity بستگی داره.
یعنی نوع فیلد integer باشه یک پرش 1000 تایی داره و چنانچه از نوع مثلا  bigint باشه پرش 10000 تایی دارید
البته اگر این حالت براتون مشکل ایجاد میکنه، بهتره به جای فیلد identity از فیلد sequence استفاده کنی.

 

رفع مشکل پرش خودکار مقدار فیلد Identity در Sql Server

برای رفع این مشکل مراحل زیر رو به ترتیب انجام بدید :

 

  • ابتدا از منوی start ویندوز Sql Server Configuration Manager رو باز کنید. دقت کنید که برای دسترسی به Sql Server Configuration Manager در ویندوز 8 به بالا وارد کنترل پنل بشید. گزینه Administrative Tools رو بزنید و سپس Computer Managment رو بزنید. حالا باید طبق تصویر زیر به سرویس های Sql Server دسترسی داشته باشید.

پرش خودکار مقدار فیلد Identity در sql server

 

  • حالا از پنجره سمت چپ یا سمت راست گزینه Sql Server Services رو انتخاب کنید تا لیست Service های نصب شده Sql Server روی سیستم شما یا روی سرور رو بهتون نمایش بده.

 

رفع مشکل identity

  • حالا روی گزینه Sql Server طبق تصویر دوبار کلیک کنید تا تنظیمات سرویس sql Server شما باز شود. به سربرگ startup Parameters مراجعه کنید و در تکست باکس مشخص شده عبارت -t272 رو وارد کنید و Ok کنید

sql server

 

بعد از انجام این مراحل مشکل پرش ناگهانی Identity در sql Server مرتفع میشه.

موفق باشید

به این پاسخ امتیاز بدهید    1
امتیاز: 277 رتبه: 6
پاسخ دهنده : Alireza 22:15 1399/01/20

سلام میتونی یه بار identity رو no کنی بعد ذخیره کنی بعدش yes کنی و ذخیره ش کنی تا از جایی که آخرین id ثبت شده ادامه بده.

به این پاسخ امتیاز بدهید    0
امتیاز: 115 رتبه: 13
پاسخ دهنده : taqech 10:05 1404/04/21

این کد رو در یک کویری در دیتابیس اجرا کنید
 

ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF

 

به این پاسخ امتیاز بدهید    0
امتیاز: 10 رتبه: 70
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود